A plugin is a software component that adds one or more designated capabilities to a software application. The plugin may be used to enable third-party developers to create abilities that extend the application, to support easily adding new features (e.g., profiling, diagnostics, etc.) to the application, to reduce the size of the application, etc. Developers traditionally include plugins in an application prior to deployment of the application. One limitation regarding conventional techniques for installing plugins is that the application owner, which is not necessarily the application developer, typically is not able to add, remove, and/or update the plugins based on current need without rebuilding and redeploying the application. Rebuilding and redeploying the application may be a time consuming and/or costly process. Also, such conventional techniques often provide many copies of the same plugin(s) packaged within many different applications, which may hamper wide-spread deployment of updated versions of the plugin(s). For instance, if a new version of a plugin fixes a security vulnerability, every application which was packaged with that plugin traditionally is repackaged and redeployed; this repackaging and redeploying may occur relatively slowly. Accordingly, the conventional techniques may result in increase package size, storage costs, and/or transmission costs.
In some conventional techniques, developers create their own startup tasks that utilize existing installation mechanisms (e.g., Web Platform Installer) to install pre-requisites (a.k.a. dependencies) of the application. A pre-requisite of an application is a software component that is not included in the application and that the application needs in order to properly run. For example, if the application is JAVA®-based, the JAVA® run time may be a pre-requisite of the application. In another example, if the application is a PHP™ application, the PHP™ run time may be a pre-requisite of the application. Each startup task often uses a script to call a command-line utility to install a particular product needed by the application. While using scripts in this manner may not be unduly burdensome for individual applications, the scripts typically are hand-written and tested by every developer, for each application. No standard, general, robust mechanism is known for installing such components. Furthermore, if the application requires a different set of pre-requisites (e.g., a new version of a pre-requisite), it may be necessary to rebuild and redeploy the application in order to install and execute the different set of pre-requisites. Again, no standard, general, robust mechanism exists for installing such components post-deployment.